package com.xique.park.service.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.domain.ParkChargeRuleComm;
import com.xique.park.bean.request.web.chargeRule.*;

import java.util.List;

/**
 * 计费规则
 *
 * @author xique
 */
public interface IParkChargeRuleBizService {

    /**
     * 查询规则列表
     *
     * @return 规则列表
     */
    AjaxResult getParkChargeRuleList();

    /**
     * 规则信息回显
     *
     * @param ruleId 收费规则ID
     * @return 收费规则信息
     */
    AjaxResult getParkChargeRuleInfo(Long ruleId);

    /**
     * 管理类型和车库，绑定的计费规则查询
     *
     * @param request 管理类型和车库，请求绑定的计费规则request
     * @return 查询结果
     */
    AjaxResult getMngTypeGarageRule(MngTypeGarageRuleRequest request);

    /**
     * 添加计费规则
     *
     * @param request 添加规则请求request
     * @return 添加结果
     */
    AjaxResult addChargeRule(AddChargeRuleRequest request);

    /**
     * 编辑计费规则
     *
     * @param request 编辑规则请求request
     * @return 编辑保存结果
     */
    AjaxResult editChargeRule(EditChargeRuleRequest request);

    /**
     * 计费规则适用的管理类型和车库处理
     *
     * @param ruleComm          计费价格
     * @param typeGarageObjList 管理类型和车库实体列表
     * @return 结果
     */
    AjaxResult chargeTempHandle(ParkChargeRuleComm ruleComm, List<TypeGarageObj> typeGarageObjList);

    /**
     * 删除收费规则
     *
     * @param request 删除计费规则的请求对象
     * @return 删除结果
     */
    AjaxResult delChargeRule(DeleteChargeRuleRequest request);

    /**
     * 下发全部收费规则
     *
     * @return 下发结果
     */
    AjaxResult downAll();

    /**
     * 计费测试
     *
     * @param request 收费规则测试请求对象
     * @return 测试结果
     */
    AjaxResult feeTest(FeeTestRequest request);

    /**
     * 管理类型和车库组合
     *
     * @return 管理类型和车库组合
     */
    AjaxResult getMngTypeGarage();
}
